﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities.Auditing;

namespace SanJ.FreeCare.Schedules
{
    /// <summary>
    /// 工作计划
    /// </summary>
    public class Schedule : AuditedAggregateRoot<Guid>
    {
        /// <summary>
        /// 有效性
        /// </summary>
        public string IsActive { get; set; }

        /// <summary>
        /// High-level category
        /// 高类别级别（号类：普通、专家、急诊、义诊、免费）
        /// </summary>
        public string[] ServiceCategoryCode { get; set; }

        /// <summary>
        /// Specific service
        /// 特定服务（人或设备绑定的项目ID集合）
        /// </summary>
        public Guid[] HealthcareServiceId { get; set; }

        /// <summary>
        /// 所需专业类型Code
        /// </summary>
        public string[] SpecialtyCode { get; set; }

        /// <summary>
        /// 名字（可以用医疗组名、医生名、设备名）
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Resource(s) that availability information is being provided for
        /// 提供可用性信息的资源
        /// Reference(Patient | Practitioner | PractitionerRole | CareTeam | RelatedPerson | Device | HealthcareService | Location)
        /// 参考资料（患者|从业者|从业者角色|护理团队|相关人员|设备|医疗服务|地点）（储存人员ID或设备编号集合）
        /// </summary>
        public List<Actor> ActorList { get; set; }

        /// <summary>
        /// Period of time covered by schedule
        /// 时间表涵盖的开始时间
        /// </summary>
        public DateTime PlanningHorizonStartTime { get; set; }

        /// <summary>
        /// Period of time covered by schedule
        /// 时间表涵盖的结束时间
        /// </summary>
        public DateTime PlanningHorizonEndTime { get; set; }

        /// <summary>
        /// Comments on availability
        /// 备注
        /// </summary>
        public string Comment { get; set; }

        public string[] Rules { get; set; }
    }

    public class Actor
    {
        public string ActorType { get; set; }

        public Guid ActorId { get; set; }
    }
}
